#ifndef __APP_MESSAGE_H
#define __APP_MESSAGE_H

#ifdef __cplusplus
extern "C" {
#endif

typedef enum 
{
/** generally */
	MSG_NONE = 0,
  
  MSG_DISPLAY_UPDATE,

	//key
	MSG_KEY_OCEP_1_H,
	MSG_KEY_OCEP_2_H,
	MSG_KEY_OCEP_3_H,
	MSG_KEY_OCEP_4_H,
	MSG_KEY_OCEP_1_L,
	MSG_KEY_OCEP_2_L,
	MSG_KEY_OCEP_3_L,
	MSG_KEY_OCEP_4_L,
	
	//以下为与遥控器通讯的消息
	MSG_UART_BEGIN = 0x100,
	MSG_SYNCHRONOUS,	 //消息同步，开机时候执行
	MSG_CRAWLING_MODE,	 //爬行模式
	MSG_DRILLING_MODE,	 //钻孔模式
  MSG_CAMERA_MODE,     //摄像头模式
  MSG_CALIBRATION_MODE,//校准模式
  MSG_CALIBRATION_MODE_SET,//校准模式设置参数
  MSG_MODE_OK,		 //模式加载成功
	MSG_MODE_SWITCH_WAIT,	//等待回收镜头与钻头
	MSG_MODE_SWITCH_ROTATE,	//等待切换镜头与钻头

	MSG_CAM_OFF,//镜头关闭
	MSG_CAM1,	//镜头选择
	MSG_CAM2,	//镜头选择
	MSG_CAM3,	//镜头选择
	MSG_CAM4,	//镜头选择

	MSG_MPU6050_ON,			//陀螺仪开
	MSG_MPU6050_OFF,		//陀螺仪关
	
	//电机控制消息
	MSG_MOTOR_STOP_ALL,
	MSG_MOTOR_DRILL_ON,		//钻孔电机开
	MSG_MOTOR_DRILL_OFF,	//钻孔电机关
	MSG_MOTOR_DRILL_UP,		//钻孔电机上升
	MSG_MOTOR_DRILL_DOWN,	//钻孔电机下降
	MSG_MOTOR_DRILL_POSITION,//钻孔电机位置
	MSG_MOTOR_DRILL_STOP,	//钻孔电机停止
	MSG_MOTOR_DRILL_GET,	//钻孔电机获取位置
	MSG_MOTOR_DRILL_ERROR,	//钻孔电机顶到东西了

	MSG_MOTOR_SERVO_ON,		//舵机电源
	MSG_MOTOR_SERVO_OFF,	//舵机电源
	MSG_MOTOR_CAMERA_ON,	//摄像机开
	MSG_MOTOR_CAMERA_OFF,	//摄像机关
	MSG_MOTOR_CAMERA_UP,	//摄像机上升
	MSG_MOTOR_CAMERA_DOWN,	//摄像机下降
	MSG_MOTOR_CAMERA_POSITION,//钻孔电机位置
	MSG_MOTOR_CAMERA_STOP,	//摄像机停止
	MSG_MOTOR_CAMERA_GET,	//摄像机获取位置

	MSG_MOTOR_CAMERA_H_U,	//摄像机微调水平上
	MSG_MOTOR_CAMERA_H_D,	//摄像机微调水平下
	MSG_MOTOR_CAMERA_H_L,	//摄像机微调水平左
	MSG_MOTOR_CAMERA_H_R,	//摄像机微调水平右
	MSG_MOTOR_CAMERA_H_U_TOP,	//摄像机微调水平上到头了
	MSG_MOTOR_CAMERA_H_D_TOP,	//摄像机微调水平下到头了
	MSG_MOTOR_CAMERA_H_L_TOP,	//摄像机微调水平左到头了
	MSG_MOTOR_CAMERA_H_R_TOP,	//摄像机微调水平右到头了

	//身体移动消息
	MSG_ROBOT_MIN = 0x200,
	MSG_ROBOT_FORWARD,	//前进
	MSG_ROBOT_BACK,		//后退
	MSG_ROBOT_LEFT,		//左转
	MSG_ROBOT_RIGHT,	//右转
	MSG_ROBOT_UP,		//抬升
	MSG_ROBOT_DOWN,		//下降
	MSG_ROBOT_X,		//x轴
	MSG_ROBOT_Y,		//y轴
	MSG_ROBOT_SET,		//设置

	MSG_ROBOT_MOVE_OK,//移动完成
	MSG_ROBOT_MAX,

	//以下为与副板通讯的消息
	MSG_MOTOR_BEGIN = 0x500,
	MSG_MOTOR_DC,
	MSG_MOTOR_STEP,
	MSG_MOTOR_STEP_POSITION,
	MSG_MOTOR_DRILL,
	MSG_MOTOR_STOP,
	MSG_MOTOR_GET_DRILL,
	MSG_MOTOR_GET_CAM,
	MSG_OCEP_GET_DRILL,
	MSG_OCEP_GET_CAM,
	MSG_OCEP_GET_UP,
	MSG_MOTOR_END,

	MSG_OCEP_1_H,
	MSG_OCEP_2_H,
	MSG_OCEP_3_H,
	MSG_OCEP_1_L,
	MSG_OCEP_2_L,
	MSG_OCEP_3_L,
	MSG_MOTOR_STOPUP,//堵转
	MSG_MOTOR_BEGINUP,//堵转后释放

} MessageId;

#ifdef __cplusplus
}
#endif

#endif /* __APP_MESSAGE_H */
